const name = 'lanpang';
const gender = true;

function myTagFunc(others, name, gender) {
  // 接收的第一个参数 这个参数是一个数组 存的按照变量分割后的数组
  // 剩下的就是在模板字符串中插入的变量值
  console.log(others); // ['hello, i am', ' is a ', '!'];
  console.log(name); // lanpang
  console.log(gender); // true
  return 123; // 这个方法返回的值就是带这个标签的模板字符串的值
}

const result = myTagFunc`hello, i am ${name} is a ${gender}!`;
console.log(result); // 123 

function tag(others, name, gender) {
  return others[0] + name + others[1] + gender + others[2];
}

const result2 = tag`hello, i am ${name} is a ${gender}!`;
console.log(result2); // hello, i am lanpang is a true!

// 带标签的模板字符串的作用就是对模板字符串进行加工
// 例如gender是性别 传入的是 true 可以根据这个判断是男女
function tag3(others, name, gender) {
  const sex = gender ? 'man' : 'woman';
  return others[0] + name + others[1] + sex + others[2];
}

const result3 = tag3`hello, i am ${name} is a ${gender}!`;
console.log(result3); // hello, i am lanpang is a man! 